package com.common.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @author 大静
 * @version 1.0
 * @date 2021-05-07 14:51
 * @description
 */
public class MD5Utils {
  /**
   * 使用MD5加密
   *
   * @param plainText 要加密的文本
   * @return 加密后的文本
   */
  public static String md5(String plainText) {
    if (plainText != null) {
      // 存放哈希值结果的 byte 数组
      byte[] sourceBytes = null;
      try {
        /**
         * getInstance("md5"):返回实现指定摘要算法MessageDigest 对象；digest(byte[] ..)使用指定 byte
         * 数组对摘要进行最后更新，然后完成摘要计算
         */
        sourceBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes());
      } catch (NoSuchAlgorithmException e) {
        throw new RuntimeException("No Have MD5 Algorithm");
      }
      StringBuilder md5code = new StringBuilder(new BigInteger(1, sourceBytes).toString(16));
      for (int i = 0; i < 32 - md5code.length(); i++) {
        md5code.insert(0, "0");
      }
      return md5code.toString();
    } else {
      return null;
    }
  }
}
